﻿/*
题目: Pow(x, n)

实现 pow(x, n) ，即计算 x 的整数 n 次幂函数（即，xn ）。

https://leetcode.cn/problems/powx-n/description/
*/

#include <iostream>
#include <random>
#include <string>
#include <vector>
#include <list>
#include "TreeNode.hpp"
#include "ListNode.hpp"
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <functional>

using namespace std;

class Solution {
public:
    double puick_pow(double x, long long n) {
        double base = x;
        double res = 1.0;

        while (n) {
            if (n & 1) {
                res *= base;
            }

            base *= base;
            n >>= 1;
        }

        return res;
    }

    double myPow(double x, int n) {
        return n < 0 ? 1.0 / puick_pow(x, (long long)n * -1) : puick_pow(x, n);
    }
};
